//
//  ViewController.m
//  11207城市
//
//  Created by 小白 on 16/3/4.
//  Copyright © 2016年 小白. All rights reserved.
//

#import "ViewController.h"
//声明代理 和 数据源
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
//建立取值数组
@property (nonatomic,copy) NSArray *areaArr;
//创建UItableview的属性
@property (nonatomic,strong) UITableView *tableView;
//创建接受省的名字数组
@property (nonatomic,copy) NSArray *arrProvice;


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //分析方法和之前的一样
    //不同的就是去数值的方法
    //plist 文件层级分析
    //第一层 Array 
    //第二层 Dictionary （分为两种 一种对应值 一种对应数组）
    //第三层 cities键值对应的 城市Array
    //第四层 是Dictionary
    //嵌套的比较多
    //取数值
    NSString *path = [[NSBundle mainBundle]pathForResource:@"area1" ofType:@"plist"];
    NSArray *arr = [NSArray arrayWithContentsOfFile:path];
    self.areaArr = arr;
    
    //创建UItableview
    UITableView *tbView = [[UITableView alloc]initWithFrame:CGRectMake(0, 22, 375, 667)];
    [self.view addSubview:tbView];
    self.tableView = tbView;
    //声明代理人
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    //装格式
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
  
}


//有几个section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    //这里要取到北京 天津等城市
    //所以属于第二层dictionary里面的元素
    //那么不用取key数组用第一层的array就能得到
    return self.areaArr.count;
    
    
}              // Default is 1 if not implemented
//每个section 里面有几个 元素
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    //分析这里要求得是每个第二层的Dictionary 对应得第四层的Dictionary的元素
    //可以用第三层的array的元素个数来判断
    //因为每个array里面只有一个Dictionary
    //第一步 求得array中的每个section 对应得元素 即 Dictionary
    NSDictionary *dic = self.areaArr[section];
    //第二步 求得我们要找的区数组 即 key关键字 对应的区数组 array
    NSArray *arr = dic[@"Cities"];
    //第三部 返回数组的元素个数 即为区的个数
    return arr.count;
    
}


//单元格对应要显示的元素
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    //设置区 即第四层Dictionary key对应得元素
    //第一步 获得数组对应的字典
    NSDictionary *dic = self.areaArr[indexPath.section];
    //第二步 获得字典对应的区数组
     NSArray *arr = dic[@"Cities"];
    //第三步 根据索引 index 获得区数组的元素
    NSDictionary *dict = arr[indexPath.row];
    //第四步 根据键city 返回区值
    cell.textLabel.text = dict[@"city"];
    //稍微设置下字体
    cell.textLabel.font = [UIFont systemFontOfSize:13];
    //返回cell
    return cell;
}



//section的头文字
- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    //头文件为第二层dictionary的State对应的值
    //第一步 得到array的元素 Dictionary
    NSDictionary *dic = self.areaArr[section];
    //第二步 根据键值 State得到Dictionary 中state对应的值 并返回
    return dic[@"State"];
    
}

//右边导航
- (nullable NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView
    {
        //就是把第二层dictionary 以键 State 对应的值组成数组
        //第一步 得到第二层dictionary 方法就是遍历 array
        //第二步 创建一个新数组接受指定的Dictionary
        NSMutableArray *mArr = [NSMutableArray array];
        for (NSDictionary *element in self.areaArr){
            //第三步 取出所以Dictionary 的键 State 对应的值 并加进数组
            [mArr addObject:element[@"State"]];
        }
        self.arrProvice = mArr;
        //返回数组
        return self.arrProvice;

    }






- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
